package ru.averta.notes.domain.virtual;

import ru.averta.notes.domain.ajax.AjaxTagsCombination;
import ru.averta.notes.domain.flags.IAjaxable;

import java.util.LinkedList;
import java.util.List;

/**
 * <code>TagsCombination</code>
 *
 * @author fedor.belov (fedor.belov@mail.ru)
 *         Date: 27.09.11 16:26
 */
public class TagsCombination implements IAjaxable<AjaxTagsCombination> {

    /** список тегов в комбинации */
    private List<String> tags = new LinkedList<String>();
    /** сопоставленный списку тегов список изменений букв (например, в первом теге заменена 2ая буква) */
    private List<String> changed = new LinkedList<String>();
    /** количество сайтов с подобной комбинацией */
    private Integer count = 1;

    public TagsCombination() {
    }

    public TagsCombination(Integer count) {
        this.count = count;
    }

    public void addTag(String tag, String change) {
        tags.add(tag);
        changed.add(change);
    }

    /** GETTER'ы для клиента */
    public List<String> getTags() {
        return tags;
    }

    public List<String> getChanged() {
        return changed;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    @Override
    public AjaxTagsCombination getAjaxObject() {
        return new AjaxTagsCombination(count, tags, changed);
    }
}
